﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Dao.Intermediarios;
using Dao;

namespace _InformaticaIndustrial_DerivdosVinicos.Interfaz
{
    public partial class AltaCentroTrabajo : Form
    {
        #region Property

        int idCT;
        private Principal principal;
        CentroTrabajo centroTrabajo;
        IPEdificio ipEdificion = new IPEdificio();
        IPPuesto ipPuesto = new IPPuesto();
        IPCentroTrabajo iPCentroTrabajo = new IPCentroTrabajo();

        #endregion Property

        #region Methods
        
        public AltaCentroTrabajo(Principal ppal)
        {
            InitializeComponent();
            this.principal = ppal;
            txtCodCT.Text = Convert.ToString((iPCentroTrabajo.getAll<CentroTrabajo>().Last().IdCentroTrab != 0) ? (iPCentroTrabajo.getAll<CentroTrabajo>().Last().IdCentroTrab + 1) : (1));
            LoadCodigo();
            LoadCombos();
            dgvMaquina.DataSource = new IPMaquina().getAll<Maquina>();
        }

        private void LoadCombos()
        {
            cbEdificio.DataSource = ipEdificion.getAll<Edificio>();
            cbEdificio.DisplayMember = "nombreEdificio";
            cbEdificio.ValueMember = "IdEdificio";

            cbPuesto.DataSource = ipPuesto.getAll<Puesto>();
            cbPersonas.DataSource = new IPPersona().getAll<Persona>();
        }

        private void LoadCodigo()
        {
            idCT = iPCentroTrabajo.getAll<CentroTrabajo>().Last().IdCentroTrab;
        }

        private void buttonAceptar_Click(object sender, EventArgs e)
        {
            double totalUsoMaquinas = 0;
            errorProvider1.Dispose();

            try
            {
                if (!(txtNombre.Text.Trim().Equals("")))
                {
                    centroTrabajo = new CentroTrabajo();
                    centroTrabajo.nombreCtroTrab = txtNombre.Text;
                    centroTrabajo.IdEdificio = Convert.ToInt16(cbEdificio.SelectedValue);
                    centroTrabajo.IdPuesto = Convert.ToInt16(cbPuesto.SelectedValue);
                    centroTrabajo.CantPersonas = Convert.ToInt16(txtCantPersonas.Text);
                    centroTrabajo.TarifaMO = (txtTarifaMO.Text != "") ? Convert.ToDouble(txtTarifaMO.Text) : (0);
                    centroTrabajo.TarifaPreparacion = (txtTarifaPrep.Text != "") ? Convert.ToDouble(txtTarifaPrep.Text) : (0);
                    centroTrabajo.Activo = true;
                    iPCentroTrabajo.save<CentroTrabajo>(centroTrabajo);
                    Intermediario.confirmarCambios();

                    for (int i = 0; i < dgvMaquina.Rows.Count ; i++)
                    {
                        if (Convert.ToInt16(dgvMaquina.Rows[i].Cells["Tiene"].Value) == 1)
                        {
                            Maquina maq = (Maquina)dgvMaquina.Rows[i].DataBoundItem;
                            maq.IdCT = centroTrabajo.IdCentroTrab;

                            if (dgvMaquina.Rows[i].Cells["HorasUso"].Value != "")
                            {
                                totalUsoMaquinas += Convert.ToDouble(dgvMaquina.Rows[i].Cells["HorasUso"].Value) * Convert.ToDouble(dgvMaquina.Rows[i].Cells["TarifaMaqxHora"].Value);
                                maq.HrsUso = Convert.ToDouble(dgvMaquina.Rows[i].Cells["HorasUso"].Value);
                            }

                            Intermediario.confirmarCambios();  
                        }
                    }

                    txtTarifaTotalMaq.Text = totalUsoMaquinas.ToString();
                    MessageBox.Show("El centro de trabajo ha sido guardado correctamente");
                    buttonAceptar.Enabled = false;
                }
                else
                {
                    errorProvider1.SetError(txtNombre, "Debe ingresar un nombre para el centro de trabajo");
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Error al intentar guardar el centro de trabajo");
            }
        }

        private void buttonCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }


        #endregion Methods

    }
}
